package com.jeff.question100;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;

/**
 * @author yaojianfeng
 */
public class MaxMinSum {

    public static int calculateSum(int[] arr, int n) {
        // 去重
        Set<Integer> uniqueArr = new HashSet<>();
        for (int num : arr) {
            uniqueArr.add(num);
        }

        // 检查n是否合法
        if (n > uniqueArr.size() || n == 0) {
            return -1;
        }

        // 转换为数组并排序
        Integer[] sortedArr = uniqueArr.toArray(new Integer[0]);
        Arrays.sort(sortedArr);

        // 计算最大N个数与最小N个数的和，确保不重叠 如果有重叠，则返回-1
        if (sortedArr.length < n * 2) {
            return -1;
        }


        int sum = 0;
        for (int i = 0; i < n; i++) {
            sum += sortedArr[i]; // 添加最小的n个数
            sum += sortedArr[sortedArr.length - 1 - i]; // 添加最大的n个数，从后向前添加以避免重叠
        }


        return sum;
    }

    public static void main(String[] args) {
        int[] arrExample = {1, 3, 5, 5, 7};
        int n = 2;
        System.out.println(calculateSum(arrExample, n));
    }
}
